package com.cj.controller;

import com.cj.po.Dormitory;
import com.cj.po.PageInfo;
import com.cj.service.DormitoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.List;

// 控制器类，负责处理宿舍相关的请求
@Controller
public class DormitoryController {

    // 注入宿舍服务
    @Autowired
    private DormitoryService dormitoryService;

    /**
     * 分页查询宿舍信息
     * @param g_id 班级ID
     * @param d_id 宿舍ID
     * @param d_dormbuilding 宿舍楼名称
     * @param d_grade 年级
     * @param pageIndex 当前页码
     * @param pageSize 每页显示的条数
     * @param model Model对象，用于传递数据到前端
     * @return 返回宿舍列表的视图名称
     */
    @RequestMapping(value = "/findDormitory")
    public String findDormitory(Integer g_id, Integer d_id, String d_dormbuilding,
                                Integer d_grade, Integer pageIndex, Integer pageSize, Model model) {
        // 调用服务层方法获取分页信息
        PageInfo<Dormitory> pi = dormitoryService.findPageInfo(g_id, d_id, d_dormbuilding, d_grade
                , pageIndex, pageSize);
        // 将分页信息添加到模型中
        model.addAttribute("pi", pi);
        model.addAttribute("d_id", d_id);
        return "dormitory_list"; // 返回宿舍列表视图
    }

    /**
     * 导出宿舍信息为Excel格式
     * @return 返回宿舍列表
     */
    @RequestMapping(value = "/exportdormitorylist", method = RequestMethod.POST)
    @ResponseBody
    public List<Dormitory> exportStudent() {
        // 获取所有宿舍信息
        List<Dormitory> dormitoryList = dormitoryService.getAll();
        return dormitoryList; // 返回宿舍列表
    }

    /**
     * 删除指定的宿舍信息
     * @param d_id 宿舍ID
     * @return 返回处理结果
     */
    @RequestMapping("/deleteDormitory")
    @ResponseBody
    public String deleteDormitory(Integer d_id) {
        // 调用服务层删除宿舍
        int s = dormitoryService.deleteDormitory(d_id);
        return "dormitory_list"; // 删除后返回宿舍列表视图
    }

    /**
     * 添加新的宿舍信息
     * @param dormitory 宿舍对象
     * @return 返回处理结果
     */
    @RequestMapping(value = "/addDormitory", method = RequestMethod.POST)
    @ResponseBody
    public String addDormitory(@RequestBody Dormitory dormitory) {
        // 调用服务层添加宿舍
        int s = dormitoryService.addDormitory(dormitory);
        return "dormitory_list"; // 添加后返回宿舍列表视图
    }

    /**
     * 修改已有的宿舍信息
     * @param dormitory 宿舍对象
     * @return 重定向到宿舍列表
     */
    @RequestMapping(value = "/updateDormitory", method = RequestMethod.POST)
    public String updateDormitory(Dormitory dormitory) {
        // 调用服务层更新宿舍信息
        int s = dormitoryService.updateDormitory(dormitory);
        return "redirect:/findDormitory"; // 更新后重定向到宿舍列表
    }

    /**
     * 根据宿舍ID查找宿舍信息
     * @param d_id 宿舍ID
     * @param session HttpSession对象，用于存储会话数据
     * @return 返回宿舍编辑视图
     */
    @RequestMapping("/findDormitoryById")
    public String findDormitoryById(Integer d_id, HttpSession session) {
        // 调用服务层查找宿舍信息
        Dormitory d = dormitoryService.findDormitoryById(d_id);
        // 将宿舍信息存储到会话中
        session.setAttribute("d", d);
        return "dormitory_edit"; // 返回宿舍编辑视图
    }
}
